package com.ruoyi.system.mapper;

import com.ruoyi.common.core.domain.entity.SysStation;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 工站管理 数据层  类似于dao层映射
 * 
 * @author ruoyi
 */
public interface SysStationMapper
{
    /**
     * 查询工站人数
     * 
     * @param station 工站信息
     * @return 结果
     */
    public int selectStationCount(SysStation station);

    /**
     * 查询工站是否存在用户
     * 
     * @param stationId 工站ID
     * @return 结果
     */
    public int checkStationExistUser(Long stationId);

    /**
     * 查询工站管理数据
     * 
     * @param station 工站信息
     * @return 工站信息集合
     */
    public List<SysStation> selectStationList(SysStation station);

    /**
     * 删除工站管理信息
     * 
     * @param stationId 工站ID
     * @return 结果
     */
    public int deleteStationById(Long stationId);

    /**
     * 新增工站信息
     * 
     * @param station 工站信息
     * @return 结果
     */
    public int insertStation(SysStation station);

    /**
     * 修改工站信息
     * 
     * @param station 工站信息
     * @return 结果
     */
    public int updateStation(SysStation station);

    /**
     * 修改子元素关系
     * 
     * @param stations 子元素
     * @return 结果
     */
    public int updateStationChildren(@Param("stations") List<SysStation> stations);

    /**
     * 根据工站ID查询信息
     * 
     * @param stationId 工站ID
     * @return 工站信息
     */
    public SysStation selectStationById(Long stationId);

    /**
     * 校验工站名称是否唯一
     * 
     * @param stationName 工站名称
     * @param parentId 父工站ID
     * @return 结果
     */
    public SysStation checkStationNameUnique(@Param("stationName") String stationName, @Param("parentId") Long parentId);

    /**
     * 根据角色ID查询工站
     *
     * @param roleId 角色ID
     * @return 工站列表
     */
    public List<String> selectRoleStationTree(Long roleId);

    /**
     * 修改所在工站的父级工站状态
     * 
     * @param station 工站
     */
    public void updateStationStatus(SysStation station);

    /**
     * 根据ID查询所有子工站
     * 
     * @param stationId 工站ID
     * @return 工站列表
     */
    public List<SysStation> selectChildrenStationById(Long stationId);

    /**
     * 根据ID查询所有子工站（正常状态）
     * 
     * @param stationId 工站ID
     * @return 子工站数
     */
    public int selectNormalChildrenStationById(Long stationId);
}
